package com.m.IO;

import java.io.File;
import java.io.FileFilter;

/**
 *      统计一个文件路径中中所有的class文件及其个数
 *
 * @author Mc.Chai
 * @program: Java基础
 * @create 2021-11-24-20:27 20:27
 */
public class TestNumberOfFile {
    static int count=0;
    public static void main(String[] args) {

        File file = new File("D:\\代码文件夹");
        showAll(file);
        System.out.println(count);
    }
    /**
     * 定义一个方法，统计文件夹中所有的class文件
     * listFiles(Filter)添加满足Filter过滤的文件
     * 实现Filter接口，逐个进行文件的判断，pathname代表当前文件
     */
    public static void showAll(File file){
        //files中存储的是符合调节的文件和所有的文件夹
        File[] files=file.listFiles(new FileFilter() {
            //如果返回true怎进入files数组
            @Override
            public boolean accept(File pathname) {
                //判断是否是文件夹
                if (pathname.isDirectory()){
                    return true;
                }
                //判断是否是文件
                if (pathname.isFile()){
                    //判断文件的后缀名
                    if(pathname.getName().endsWith(".class")){
                        count++;
                        return true;
                    }
                }
                return false;
            }
        });
        //判断符合条件的文件数组
        if(files!=null){
            //进行循环遍历数组
            for (File f:
                    files) {
                //如果是文件则打印文件名称
                if (f.isFile()){
                    System.out.println(f.getName());
                    //如果是文件夹再次进入showAll()方法递归判断
                }else{
                    showAll(f);
                }

            }
        }

    }
}
